#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <iostream>

#include <QWidget>
#include <QVBoxLayout>
#include <QHBoxLayout>
#include <QLabel>
#include <QLineEdit>
#include <QPushButton>
#include <QListWidget>

#include "User.h"

#include "UserDialog.h"
#include "HelpDialog.h"
#include "AddDialog.h"
#include "BookOpDialog.h"
#include "SubscribedDialog.h"
#include "BookFileDialog.h"
#include "MemberDialog.h"

class MainWindow
{
public:
    MainWindow(User *user);
    ~MainWindow();

    void init_view_main();   //初始化主视图
    void show();

private:
    QWidget *widget;
    QHBoxLayout *layout_main;   //主布局
    QVBoxLayout *layout_menu;   //菜单布局
    QVBoxLayout *layout_func;   //功能布局
    QHBoxLayout *layout_column; //表列名

    QHBoxLayout *layout_search; //查询布局
    QVBoxLayout *layout_table;  //展示布局

    QVector<QPushButton*> *button_list;    //按钮列表
    QVector<QLabel*> *label_list;    //列名列表
    QPushButton *button_help;   //帮助按钮

    QLineEdit *input_search;    //搜索输入
    QPushButton *but_search;    //搜索按钮
    QListWidget *list_books;    //图书列表

    UserDialog *user_dialog;    //用户
    HelpDialog *help_dialog;    //帮助
    AddDialog *add_dialog;  //添加
    BookOpDialog *book_op_dialog;   //书列表操作
    SubscribedDialog *subscribed_dialog;    //订阅
    BookFileDialog *book_file_dialog;   // 书单导入/导出
    MemberDialog *member_dialog;    //成员管理

    User *user;

    QVector<QString> *list_id;
    QVector<QString> *list_name;
    QVector<QString> *list_author;
    QVector<QString> *list_state;

    void init_view_menu();   //初始化菜单视图
    void init_view_func();   //初始化功能视图
    void init_view_search(); //初始化搜索视图
    void init_view_table(); //初始化表格视图

    void reflash_tabel(QString condition);
    void show_user();
    void show_help();
    void show_add();
    void show_subscribed();
    void book_op(QString book_id);
    void book_file_op(int op);
    void show_member();

};

#endif // MAINWINDOW_H
